Задана строка,
состоящая из латинских букв и пробелов. Удалите в ней все символы с индексами
от n до
m включительно.
Индексация начинается с 0.
Вход. В первой строке содержится текст, состоящий из не более чем
1000 латинских букв и пробелов. Вторая строка содержит два целых числа
n и
m (n ≤ m).
Выход. Выведите
обновленную строку.
Пример входа |
Пример выхода |
abrakadabra 3 6 |
abrabra |
строки
Конкатенируем
подстроки s[0; n – 1] и s[m + 1; len], где len – длина входной строки.
Задачу
можно решить другим способом, скопировав подстроку s[m+1] в позицию s[n].
Пример
В задаче
следует удалить подстроку s[3..6]. Для этого
необходимо скопировать данные начиная с символа s[7] и до ноль байта включительно в позицию s[3].
Реализация алгоритма
Объявим
символьный массив.
char s[1001];
Читаем входные данные.
gets(s);
scanf("%d %d", &n, &m);
Совершаем копирование подстроки.
strcpy(s + n, s + m + 1);
Выводим результат.
puts(s);
Реализация алгоритма – С++
#include <iostream>
#include <string>
using namespace std;
int i, n, m;
string s;
int main(void)
{
getline(cin,
s);
cin >> n >> m;
s = s.substr(0, n) + s.substr(m + 1);
cout << s << endl;
return 0;
}
Java реализация
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
String s = con.nextLine();
int n = con.nextInt();
int m = con.nextInt();
s = s.substring(0,n) + s.substring(m+1);
System.out.println(s);
con.close();
}
}
Python реализация
s = input()
a, b = map(int,input().split())
print (s[:a] + s[b+1:])